Method of and instruction set for executing operations on a device

ABSTRACT

A method for executing operations on a device includes executing one or more bytecode language instructions associated with a mobile agent. The mobile agent includes a state of a virtual machine and the bytecode language includes instructions such WARP, MESG, ESEL, ALERT, BROWSE, CAPS, SLEEP, and GPS,

TECHNICAL FIELD

This disclosure relates to executable instructions and, moreparticularly, to instructions that are executable on a device thatreceives a mobile agent.

BACKGROUND

As hardwire and wireless communication networks become more imbedded insociety, expectancy increases of always being able to contact aparticular person at any time. Often business people use a collection oftelecommunication products to contact one another and to remain incontact. By carrying cellular telephones, pagers, personal digitalassistances (PDA) and the like, a person can be mobile while stillremaining in contact for important business and personal messages.

Although, while a person may own a number of wireless devices, due topersonal preferences or idiosyncrasies, only one or two of the devicesmay actually be used by the person. Due to this personal preference, animportant message may not be received in a timely manner or possibly notreceived at all. For example, a business person may prefer to monitorhis or her PDA as opposed to their cellular phone or pager. Due to thispreference, the person may tend to always keep his or her PDA handy andtend to leave their cell phone and pager in their office or home. Sinceother people may not be aware of this personal preference, they mayattempt to make contact through the cellular phone and pager beforeattempting to send a message to the PDA during an emergency. While thisdelay may not have consequences in some instances, scenarios can beimagined in which such a delay is dire. A school may need to contact aparent in the event of an medical emergency and direct them to aparticular hospital. By not being aware of the parent's preference touse a PDA, precious time may be lost if the school follows a procedureof only calling and leaving messages on home telephones and cellularphones.

Additionally, each wireless device may operate with a unique computingenvironment. For example, the operating system used by the cellularphone may be completely different from the operating system used by thePDA. To pass the same message to each of the wireless devices, multiplesets of executable instructions may be included in the message forinteracting with each unique operating system encountered.

SUMMARY OF THE INVENTION

In one implementation, a method for executing operations on a deviceincludes executing one or more bytecode language instructions associatedwith a mobile agent. The mobile agent includes a state of a virtualmachine and the bytecode language includes instructions such as WARP,MESG, ESEL, ALERT, BROWSE, CAPS, SLEEP, and GPS.

One or more of the following features may also be included. The methodmay further include sending the mobile agent from one device to anotherdevice such as the mobile agent dispatching device or a differentdevice. The mobile agent sent to the second device represents a changedstate of the virtual machine. The mobile agent may be sent to the seconddevice after a timeout period expires at the first device.

The WARP instruction may define transmitting the state of the virtualmachine. The MESG instruction may define presenting information on adisplay. The MESG instruction may define collecting user input. The ESELinstruction may define providing a selection to a user. The ALERTinstruction may define issuing an alarm in which the alarm may includepresenting a visual alarm or producing an audible alarm. The BROWSEinstruction may define initiating an Internet browser. The SLEEPinstruction may define a time period to delay executing anotherinstruction. The delay time period may be reduced by an external event.The CAPS instruction may define a word that describes the capabilitiesof a device that receives the mobile agent. The GPS instruction maydefine determining global positioning system coordinates.

In another implementations a computer program product residing on acomputer readable medium has stored instructions which, when executed bya processor, cause the processor to execute one or more bytecodelanguage instructions associated with a mobile agent. The mobile agentincludes a state of a virtual machine and the bytecode language includesinstructions such as WARP, MESG, ESEL, ALERT, BROWSE, CAPS, SLEEP, andGPS.

In still another implementation, an executable instruction set includesbytecode language instructions associated with a mobile agent. Themobile agent includes a state of a virtual machine and bytecode languageinstructions include instructions such as WARP, MESG, ESEL, ALERT,BROWSE, CAPS, SLEEP, and GPS.

The details of one or more implementations is set forth in theaccompanying drawings and the description below. Other features andadvantages will become apparent from the description, the drawings, andthe claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram depicting a network of wireless and hardwirecommunication devices.

FIG. 2 depicts mobile agents transmitting though a portion of thecommunication network.

FIG. 3 depicts a message and input request being presented on threedifferent communication devices.

FIG. 4 is a block diagram that represents a mobile agent that stores thestate of a virtual machine.

FIG. 5 is an exemplary listing of code that represents information,including a state of a virtual machine, stored in a mobile agent.

FIG. 6 is a flow chart that represents interactions between a mobileagent and a recipient communication device.

FIG. 7 is a flow chart that represents operations initiated by executinga WARP bytecode instruction.

FIG. 8 is a flow chart that represents operations initiated by executinga MESG bytecode instruction.

FIG. 9 is a flow chart that represents operations initiated by executingESEL bytecode instruction.

FIG. 10 is a flow chart that represents operations initiated byexecuting an ALERT bytecode instruction.

FIG. 11 is a flow chart that represents operations initiated byexecuting a BROWSE bytecode instruction.

FIG. 12 is a flow chart that represents operations initiated byexecuting a CAPS bytecode instruction.

FIG. 13 is a flow chart that represents operations initiated byexecuting a GPS bytecode instruction.

FIG. 14 is a flow chart that represents operations initiated byexecuting a SLEEP bytecode instruction.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring to FIG. 1, a communication system 10 includes a variety ofcommunication devices which are capable of sending and receivinginformation over hard wire and wireless links. For example, a group ofcomputer systems 12-16 individually connect over respective hardwirelinks 18-22 to a server 24. By establishing these connections, server 24operates as a gateway for electronically passing information (e.g.,email messages, data files, etc.) among computer systems 12-16. Server24 also connects over a hardwire link 26 to a network 28 (e.g., theInternet, a wide area network, a local area network, etc.) so thatinformation may be passed among one or more of computer systems 12-16and other remotely-located communication devices. For example, messagesand information may be passed between a laptop 30, via a wireless link32, and each device that is connected directly or indirectly to network28. A computer system 34, which may be located at a residence, isconnected through a hardwire link 36 so that information may be sentfrom and received at the residence.

Along with connecting computer systems to network 28 by a hardwire orwireless link (or a combination of hardwire and wireless links), othertypes of communication devices may be linked to network 28 forinformation sharing. For example, a PDA 38 and a cellular phone 40 mayconnect to network 28 by establishing respective wireless links 42, 44with a wireless transceiver 46 that is connected to network 28 through ahardwire link 48. Similar to server 24, wireless transceiver 46 mayprovide a gateway connected wireless devices (e.g., PDA 38, cell phone40, etc.).

By providing such interconnectivity among the devices, information maybe broadcast from one device to all of the other connected devices. Forexample, a message that includes text and or graphics may be broadcastfrom computer system 12 to each device in communication system 10.Information may also be selectively transmitted to particular devices orgroups of devices. For example, a user of computer system 12 may want tosend a message only to the particular person that uses computer system34, PDA 38, and cell phone 40. Additionally, due to the personalpreferences of the recipient, the user of computer system 12 may wantthe message to travel between the devices in a particular sequence. Forexample, the message may be first directed to the device (e.g., computersystem 34) most frequently used by the recipient. Then, if the recipientis not currently using that device, the message is sent to therecipient's next most frequently used device (e.g., PDA 38). Finally, ifthere is still no indication that the recipient has received themessage, the message is passed to the device (e.g., cell phone 40) leastused by the recipient. Since the message is being passed to differenttypes of communication devices, a platform-independent message that iscompatible with each device is transmitted through communication system10.

Referring to FIG. 2, a portion of communication system 10 (shown inFIG. 1) is presented to demonstrate transmitting a platform-independentmessage to devices in a particular sequence. In this example, themessage originates at computer system 12 and is first sent to computersystem 34, which is located at the recipient's residence, by way ofserver 24 and network 28. This first leg of the transmission sequence isidentified as pathway “1”. Based on the message reception at computersystem 34 (e.g., the recipient is not present to receive the message),the message may be transmitted to the next most frequently usedrecipient device. For example, based on the recipient not interactingwith computer system 34, the message may then be sent to PDA 38 (i.e.,identified as pathway “2”). Simultaneously, or due to no recipientinteractions with PDA 38, the message may also be sent to the lessfrequently used recipient device (e.g., cell phone 40) as identified bypathway “3”). While this example presents relatively simple transmissionpaths for message travel, one skilled in the art could conceive ofrather complex transmission paths that include communication system 10and other systems not shown. Additionally, while exemplary communicationsystem 10 includes relatively few devices in other arrangements acommunication system may include a large number of devices (e.g., asatellite based communication system) and be capable of transmittingmany messages.

To pass information (e.g., messages) among the devices in communicationsystem 10, mobile agents are dispatched from and received by thedevices. Continuing the message-sending scenario discussed above, amobile agent 50 (that stores the message) is produced by and dispatchedfrom computer system 12. Following pathway “1”, mobile agent 50 isreceived by computer system 34. Then as mentioned, based on lack of userinteraction with computer system 34, a mobile agent 52 (a modifiedversion of mobile agent 50) is sent to one or more other devices (e.g.,PDA 38). Furthermore, additional mobile agents may be sent throughoutcommunication system 10 to provide the message to the intendedrecipient. For example, if no user interaction occurs response at PDA38, mobile agent 54 (a modified version of mobile agent 52) is sent tocell phone 40 over pathway “3”.

Typically mobile agents 50-54 have a transitory presence and travel in aself-contained fashion such that when they are sent from a device,substantially no trace of the agent remains on the device. For example,once mobile agent 50 is transmitted from computer system 12 to computersystem 34, little or no trace of the agent remains on computer system12. Mobile agents such as mobile agent 50 are relatively small softwareobjects that move from one device to the next to execute one or moreinstructions (or programs) that are included in the agent. Some mobileagent operate in a “Fire-and-forget” mode in which the agent istransmitted to a device and is no longer under the control of the devicefrom which it was dispatched. By making decisions and actingindependently on a recipient device, the mobile agent reduces theworkload of the dispatching device. For example, by interacting withusers at a device such as computer system 34, processing power and clockcycles of the agent dispatching device (e.g., computer system 12) areconserved for other local operations.

Along with moving executable code, mobile agent 50 includes other typesof information. Data such as strings, integers, arrays, data structures,and the like may be inserted into the mobile agent to assist with theexecution of one or more instructions at the recipient device. Forexample, data may be inserted into mobile agent 50 by computer system 12to assist with subroutine calls. Furthermore, data may be inserted intoa mobile agent (e.g., mobile agent 52) by one device (e.g., computersystem 34) to direct the mobile agent to another device (e.g., PDA 38).

Each of the mobile agents (e.g. mobile 50, 52, and 54) also include datathat represents the operational state of a virtual machine that is alsoused during instruction execution. In general, a virtual machine is apiece of software that emulates a hardware device (e.g., a computersystem, central processing unit, etc.) with a particular architecture byincluding data that represents portions of the emulated hardware. Forexample, a virtual machine may include data that represents the state ofregisters (e.g., a program counter, etc.) and stacks used by aprocessor. By including this state information, as the mobile agentmoves among the devices in a communication system, the recipient devicecan access and use the stored data (e.g., register content, stackcontent, etc.) in conjuncture its own hardware (e.g., processors,memory, etc.) to execute instructions. Also, by sending the currentstate of the virtual machine in a mobile agent, instructions are notrepeatedly executed at each recipient device to place the virtualmachine in a particular state. For example, since the virtual machinestored in mobile agent 52 reflects the instructions executed at computersystem 34, instructions are not re-executed at PDA 38 to account for theoperations performed at computer system 34. Thus, clock cycles andprocessing power are not wasted by repeatedly executing instructions.

As operations are executed at different devices (e.g., computer system34, PDA 38, cell phone 40), the state of the virtual machinecorrespondingly changes. To account for these changes information isstored in the mobile agent. For example, when received by computersystem 34, mobile agent 50 stores the state (e.g., register content,stack content, etc.) of a virtual machine. As instructions are executedon computer system 34, the contents of its registers and stacks change.To reflect these changes the virtual machine state is updated in themobile agent. Mobile agent 52 represents these changes and is an updatedversion of mobile agent 50. By storing the updated state of the virtualmachine, mobile agent 52 may be directed by to one or more other devicesin communication system 10. In this particular example, after directingmobile agent 52 to PDA 38, the state of the virtual machine is againaltered by operations executed on PDA 38. Based on these executions, thestate of the virtual machine changes with respect to the state stored inmobile agent 52. Mobile agent 54 (a modified version of mobile agent 52)represents these latest changes to the virtual machine state andprovides this updated virtual machine to the next recipient device(e.g., cell phone 40).

Each of the mobile agents 50-54 may be received by any type of device incommunication system 10 independent of platform type. So, while mobileagent 50 may be directed from computer system 12 to computer system 34,in other arrangements mobile agent 50 may be directed to one or moreother types of devices (e.g. PDA 38, cell phone 40, laptop 30, etc.). Toreceive a platform-independent mobile agent (e.g., mobile agent 50) eachdevice in communication system 10 executes a respective interface engine56-60 that reside in memory at each device. In particular, interfaceengine 56 is stored in a storage device 62 (e.g., hard drive, CD-ROM,etc.) that is in communication with computer system 34. Interface engine56 can then be loaded in memory (e.g., random access memory) forexecuting on computer system 34. Similarly, PDA 38 and cell phone 40respectively include memories 64, 66 for executing interface engines 58and 60.

Along with accessing and retrieving virtual machine states (e.g.,register content, stack content, etc.) stored in a received mobileagent, interface engines 56-60 also assist in updating the virtualmachines to reflect states changes due to operations executed on thedevice (e.g., computer system 34, PDA 38, cell phone 40, etc) where theengine resides. Interface engines 56-60 also interrogate the respectivedevice where engine resides to determine the capabilities andfunctionality of the device. For example, interface engine 56 determineswhat particular software packages (e.g., Internet browser, email system,etc.) reside on and may be executed by computer system 34. Additionallyinterface engine 56 may determine the location and pathway to executablefiles and commands associated with the software packages. By determiningtheir locations and pathways, interface engine 56 can initiate executionof the software packages for performing particular functions (e.g.,execute the Internet browser to initiate an Internet search).

The following example is provided to demonstrate the mobility andadaptability of the platform independent mobile agents and the storedvirtual machines. In this example, communication system 10 is used foralerting government officials such as a town fire marshal to emergencyinformation. Computer system 12 is located at a city hall and serves asa nerve center that distributes emergency information to appropriatecity officials and employees. In this example city hall has been alertedto a house fire and computer system 12 is used to dispatch a message toa fire marshal who is currently off duty. Based on information stored incomputer system 12, personnel at city hall determine that the firemarshal typically checks his home computer (i.e., computer system 34)for alerts and messages. Less frequently the fire marshal checks his PDA38 and his cell phone 40 for emergency messages. Based on thisinformation an emergency message is stored in mobile agent 50 and theagent is dispatched from computer system 12 and sent via server 24 andnetwork 28 to computer system 34. Upon arriving at computer system 34,mobile agent 50 is detected by interface engine 56 and the virtualmachine included in the agent is accessed e.g., to retrieve register andstack contents from the virtual machine.

Executable instructions are also retrieved from mobile agent 50. Inconjunction with interface engine 56, the instructions are interpretedand executed so that an alert message is presented on computer system34. A visual message may be displayed on a monitor included in computersystem 34. Also, if interface engine 56 determined that computer system34 is capable of producing audio signals (e.g., includes an sound card),executable instructions in mobile agent 50 for producing an audible toneare interpreted and executed as directed by interface engine 56.

Referring to FIG. 3, a message 68 is displayed on computer system 34that requires user input to acknowledge the message. In this example, aninput device (e.g., mouse keyboard, etc.) is used by the user to selectwhether he or she is going to respond to the fire at the displayedlocation. Regardless of which selection is made, the state of thevirtual machine in mobile agent 50 is updated to reflect the userselection. Once updated, mobile agent 50 may be sent back to computersystem 12 to alert city hall to the intention of the fire marshal.

In this example, after presenting message 68 for a particular timeperiod, a time out occurs and mobile agent 50 is updated to reflect thelack of user interaction. For example, after two minutes, if the firemarshal has not made a selection, an assumption is made that the he orshe is not currently using computer system 34. An updated mobile agent(e.g., mobile agent 52) is then dispatched to another device asidentified by information stored in mobile agent 50. Here mobile agent52 is directed to PDA 38 to continue attempting to alert the firemarshal. Similar to interface engine 56 in computer system 34, interfaceengine 58 interrogates PDA 38 to determine its functionality andcapabilities for assisting in executing instructions. Based oninformation associated with the functionality along with capabilities,along with instructions in mobile agent 52, PDA 38 displays an alertmessage 70 that includes the selections that were displayed in alertmessage 68.

Similar to computer system 34, the message presented on PDA 38 times-outafter a period as specified by data included in mobile agent 52. If aselection is entered into PDA 38, the contents of the virtual machine isupdated to account for the selection and may be sent back to computersystem 12 to alert city hall of the selection. Also, other mobile agentsmay be sent throughout communication system 10 from PDA 38 todisseminate the entered selection. For example PDA 38 may also send amobile agent to computer system 34 to provide the selection to people atthe fire marshal's residence,

In this example, if a time-out occurs while PDA 38 displays alertmessage 70, PDA 38 updates the mobile agent (represented as mobile agent54) to reflect that no selection has been made and sends mobile agent 54to the next device associated with the fire marshal. Here, cell phone 40is the least frequently used device by the fire marshal and mobile agent54 is sent from PDA 30 to this device. Similar to the previous tworecipient devices, interface engine 60 assists in accessing the virtualmachine stored in mobile agent 54. Additionally, interface engine 60assists in interpreting and executing instructions included in mobileagent 54 to present an alert message 72 on cell phone 40. Along with thevisual alert message 72, an audible alert may be initiated from theinstructions included in mobile agent 54.

In this particular example mobile agents were passed one at a time amonga particular group of devices in communication system 10. However,multiple mobile agents may simultaneously propagate through system 10 toone or more devices. Also, in this example telecommunication deviceswere used to dispatch and receive the mobile agents. However, othersimilar types of electronic devices may be incorporated into a systemfor passing mobile agents. For example one or more microprocessors mayform a communication system and each microprocessor or differentportions of each microprocessor may be defined as a device that passesmobile agents. Furthermore, by including a virtual machine in eachmobile agent passed throughout the system, processing time at eachdevice may be reduced since the current state of the virtual machine isprovided to a recipient device without instructions being repeatedlyexecuted.

Referring to FIG. 4, a mobile agent 74 is presented to represent thecontents of a typical mobile agent such as mobile agents 50-54. To storedata, mobile agent 74 includes a string 76 (i.e., a series ofconsecutive characters) that is segmented to represent differentinformation. One string segment 78 represents the current state of thevirtual machine stored in mobile agent 74. Upon mobile agent 74 arrivingat a device (e.g., computer system 34), string segment 78 is accessed toassist with interpreting and executing instructions on the device. Inthis example, the state of the virtual machine is represented by thecontent of registers (e.g., a program counter, etc.) and one or morestacks (e.g., return/call stack, etc.). By storing the content ofregister such as a program counter, the virtual machine retains thelocation to being executing instructions in a program or subroutine sothat the recipient device (e.g., PDA 38) is aware of the location whereprocessing was halted at another device (e.g., computer system 34).

String 76 also includes a string segment 80 that stores various datathat is used in executing instructions and assisting in performing otheroperations. For example, data identifying one or more device addressesmay be included in string segment 80. By storing device addresses (e.g.,address of computer system 34, PDA 38, etc.) associated with aparticular user, a logical sequence can be determined for deliveringmobile agent 74. Textual (e.g., “Fire 15 Maple Court, Responding?”) andgraphical data along with other data types (e.g., data structures, soundfiles) may also be included in string segment 80. Also, data associatedwith user-device interactions may be included. For example, a list ofpotential user responses (e.g., “Yes”, “No”, etc.), or other types ofdata associated with user interactions may be included. Additionally,graphical data (e.g., selection buttons, menus, etc.) may be included toassist with interfacing with a user. Textual data may also be includedto assist with executing particular types of applications and executingoperations associated with applications. For example, data may beincluded for executing application operations such as directing anInternet browser (e.g., Microsoft™ Internet Explorer™) to a particularwebsite by including a uniform resource locator (URL) of the website instring segment 80.

To provide the recipient device with executable instructions, a stringsegment 82 is also included in string 70. Typically string segment 82includes instructions from a compact programming language. In thisexample, bytecode instructions are used in programs and subroutinesincluded in string segment 82. In general, bytecode is a type ofprogrammable language that encodes instructions in single bytes so thatan interpreter can relatively quickly determine the function orfunctions to execute. The bytecode instructions included in stringsegment 82 can be executed independent of platform type and are nottailored for executing on a specific type of device (e.g., computersystem 34, PDA 38, cell phone 40, etc.). Furthermore, since the virtualmachine state is transmitted with instructions in string 76, the currentcontent of the virtual machine is used to assist in interpreting thebytecode instructions or to assist in compiling the bytecode forexecution on the recipient device.

String 76 may also be processed prior to being inserted into mobileagent 74. For example, the entire string or part of the string may becompressed using a compression technique that is known by people skilledin the art. Typically, if string 76 is compressed, an interface enginesuch as engine 56 is capable of decompressing the string prior toextracting data. Also, to update a mobile agent, the interface enginemay be capable of compressing a modified version of string 76 (or aportion of the string) for storing in the mobile agent.

Referring to FIG. 5, a code listing 84 is presented that is exemplary ofcode included in a string such as string 76. In particular, code listing84 includes a virtual machine section 86, a data section 88, and aninstruction section 90. Virtual machine section 86 includes a structure92 that includes the contents of each register in the virtual machine.In this example, structure 92 includes a variable (i.e., “PC”) thatstores the contents of a program counter. This variable emulates theprogram counter in a central processing unit (CPU) that stores theaddress of the next instruction to be executed. By tracking the nextinstruction to be executed, as the mobile agent that stores code listing84 moves about a communication system, the virtual machine identifiesthe next instruction to be executed after the agent is received by arecipient device. Along with register information, other information isincluded in virtual machine section 86. A structure 94 includes thecontent of stacks being used by the virtual machine. For example, astack may be included in structure 94 for storing data used duringbytecode instruction execution.

Data section 88 stores data that is used for a variety of operations andis placed into data registers for use during instruction execution. Forexample, data register D0000 and D0003 respectively contain addresses ofdestination computer systems. For example, data in register D0000 mayrepresent the address of computer system 34 and data in register D0003may represent the address of computer system 12. Data register D0001stores a string of text for executing an operation (e.g., a “google”search) on an application (e.g., an Internet browser) resident at arecipient device. Again to execute the application, an interface engineresiding at the recipient device locates and executes the particularapplication. Data stored in data register D0002 includes a textualmessage that is displayed on the recipient device when a particularbytecode instruction is executed.

Instruction segment 90 includes a listing of bytecode instructions thatwhen executed use data segment 88 and the current state of virtualmachine 86. In this example, the bytecode instructions insert (“push”)data from data segment 88 onto a stack. Other bytecode instructionsrespectively access the stack to retrieve and use the stored data. Forexample, a bytecode instruction 96 (“mesg”) retrieves data (i.e., “Fireat 15 Maple Court, Responding?”) that is placed on the stack andpresents the data on the device (e.g., computer system 34) that executesthe instruction. If a user enters an input (e.g., selects “Yes” or“No”), data representing the user input is sent to another location(e.g., Fire Department headquarters) with another bytecode instruction(“warp”) 98. If a user input is not detected over a predetermined timeperiod (e.g., the user is not near the device), a time out occurs andthe mobile agent that stores code listing 84 is sent to another devicefor user input.

Along with being platform independent, the bytecode instructions arecompact so that relatively small memory amounts are needed for storingthe instructions in the mobile agents. By keeping the memory amountssmall, the mobile agents can be efficiently transmitted among deviceswhile improving overall system functionality. The bytecode instructionsinitiate operations that are completely general in nature and are nottailored for executing specific operations associated with the mobileagents. Since the instructions are used to execute general operations,programs and subroutines with arbitrary operations can be written andexecuted on different types of devices (e.g., computer system 34 andcellular phone 40).

Referring to FIG. 6, a flow chart 100 represents individual and jointactions of a mobile agent (e.g., mobile agent 74) and a recipient device(e.g., computer system 34, PDA 38, cell phone 40, etc.) for executingone or more platform-independent instructions included in the mobileagent. Upon receiving 102 the mobile agent, the recipient deviceaccesses 104 information stored in the mobile agent. As described, themobile agent stores the state of a virtual machine along with data thatidentifies one or more instructions for executing on the recipientdevice. An interface engine (e.g., interface engine 62) that resides onthe recipient device provides assistance to interpret and execute theinstructions provided by the mobile agent. For example, by interrogatingthe capabilities of the recipient device, the interface engine providesaccess to the applications and data that reside on the recipient device.

As instructions are executed 106, the mobile agent monitors 108 for wheninstruction execution is complete on the recipient device. For example,if a time-out occurs, the mobile agent may determine that instructionexecution is complete on the recipient device and the time has arrivedto transfer to another device. Sometimes the mobile agent may determineto suspend instruction execution at the recipient device and temporarilymove to another device (e.g., PDA 38) that is capable of performing aparticular operation. For example, if PDA 38 includes a global positionsystem (GPS) receiver, the mobile agent may temporarily transfer to thisdevice to determine the GPS location of the PDA. Upon determining theGPS fix, the mobile agent may return to the original recipient device.

Once the mobile agent has determined that the execution of theappropriate instruction or instructions is complete, data is stored 110in the mobile agent that represents an updated state of the virtualmachine due to the instruction execution. For example, for eachinstruction executed, a program counter is incremented. To indicate theincreased value of the program counter, the value is stored in thevirtual machine. By updating the program counter (along with otherregisters and stacks represented in the virtual machine), the updatedstate of the virtual machine is stored in the mobile agent prior to itdeparting 112 to one or more other devices for further processing. Byupdating the state of the virtual machine, the mobile agent indicateswhich instructions have already been executed and do not need to beexecuted again at the next recipient device or devices.

Various types of bytecode instructions may be included in theplatform-independent bytecode language that is executable on one or morerecipient devices. Some of these bytecode instructions include operatorsthat are titled “WARP”, “MESG”, “ALERT”, “BROWSE”, “CAPS”, “SLEEP”, and“GPS” and are described below. Some of these commands provide generalfunctions such as initiating the transmitting of a mobile agent from onedevice to another. Alternatively, some instructions are more specializedfor executing specific functions such as collecting coordinates thatrepresent a GPS location.

Referring to FIG. 7, a flow chart 114 represents the operations of theWARP bytecode instruction. This instruction is used to send one or moremobile agents to one or more destination devices such as computer system34 or cellular phone 40. By executing the WARP instruction, the one ormore destinations of a mobile agent are identified. This determinationcan be based on data included in the mobile agent and/or data includedin the device that executes the WARP instruction. For example, a list ofdestination devices may be included in the mobile agent and be accessedby the WARP instruction to identify the next recipient device.Alternatively, the device that executed the WARP instruction may storedata for directing the mobile agent to one or more other devices.

In some arrangements, predefined conditions may be stored in the mobileagent or in the device (executing the WARP instruction) that are used todetermine the next destination of the mobile agent. For example, apredefined condition may direct the mobile agent to one device if thecondition is met or direct the mobile agent to another device if thecondition is not met.

The WARP instruction may also trigger the storing of the current stateof the virtual machine into the mobile agent as was described inconjunction with FIG. 6. Along with storing the state of the virtualmachine, the WARP instruction may initiate compressing of the virtualmachine state, along with other data, prior to being stored in themobile agent.

Upon determining 116 the one or more destinations of the mobile agent,transmission 118 of one or more mobile agents is initiated by executingthe WARP bytecode instruction. In some arrangements only one mobileagent is sent to a destination device. However, if there are multipledestinations, copies of the mobile agent are produced and transmitted tothe respective destinations. In some cases the mobile agent copies maybe identical, but sometimes two or more unique mobile agents are sent todifferent destinations.

Referring to FIG. 8, a flow chart 120 represents the operations of theMESG bytecode instruction. In general the MESG instruction presents 122information on the device that executes the instruction. For example, byexecuting the MESG instruction on PDA 38, textual and graphicalinformation (e.g., “Fire 15 Maple Court, Responding?”) is displayed onthe screen of PDA 38. The MESG bytecode instruction then determines 124if a user is using the device by detecting user input. If a user ispresent and input is detected, the input is collected 126. For example,after the message “Fire 15 Maple Court, Responding?” is presented, auser may enter a response (e.g., “Yes”, “No”, etc.) into PDA 38. Oncecollected the response may be used for executing additional instructionsor used at another destination. If no user input is detected after aperiod of time (i.e., a time out period), the MESG bytecode instructioninitiates transmission 128 of the mobile agent. By transmitting themobile agent to one or more devices, the user (e.g., a fire marshal) maybe tracked down at another location and presented the information.

Referring to FIG. 9, a flow chart 130 represents the operations of the“select options” (ESEL) bytecode instruction. In general the ESELinstruction is used to present 132 an array of items to a user formaking one or more selections. For example, an array may include textualelements (e.g., “Yes”, “No”, etc.), numerical elements, or graphicalelements. Once presented, the executed ESEL instruction determines 134if input from a user has been received. In this example, if a particularperiod of time (i.e., a time out period) has expired prior to detectinguser input, the device is considered idle. The time out period may rangefrom a relatively short time period (e.g., milliseconds) or a longertime period (e.g., seconds, minutes, hours, etc.). Typically this timeperiod is the approximate time needed for a near-by user to pick up thedevice and enter an input. If user input is detected prior to the timeout period expiring, the user selection(s) from the array is collected136 and potentially used with other instructions. If the time out periodexpires prior to detecting any user input, the ESEL instructioninitiates the transmission of the mobile agent to one or more devices.

Referring to FIG 10, a flow chart 140 represents the operations of theALERT bytecode instruction. As the instruction name suggests, byexecuting the ALERT instruction the device executing the instructionissues one or more signals to quickly gain the attention of the user.For example, to signal the user, a visual alert may be presented 142 ona display of the device. This visual alert may include graphics, text,or images that each may be highlighted, flashing, or implement otherattention-grabbing techniques. In addition to visual alerts, other typesof alert signals may be produced individually or in combination with thea visual alert by executing the ALERT instruction. For example, anaudible tone may be produced and played through a speaker that isincluded in the device that executed the instruction. Other types ofalert signals may include vibrations produced by a transducer that is inthe device (e.g., cellular phone 40). Execution of the ALERT instructionalso determines 144 if user input has been detected or if a time periodhas expired. As previously mentioned this time out period may range froma relatively short time period (e.g., milliseconds) to longer periods(e.g., seconds, minutes, hours, etc.). Once the time out period expiresor user input is detected, the ALERT instruction stops 146 theproduction of the alert signal or signals. If user input has not beendetected prior to the time out period expiring, the alert signal orsignals continue in a repetitive fashion until the time out expirationor user input is detected.

Referring to FIG. 11, a flowchart 148 represents the operations of theBROWSE bytecode instruction. Similar to the other previously mentionedinstructions, this instruction is may also be stored in one orrelatively few bytes of memory. When executed on a device, this bytecodeinstruction initiates execution 150 of an Internet browser (e.g.,Microsoft Explorer™, Netscape Navigator™, etc.) that is resident on thedevice. To determine which executable Internet browser resides on thedevice, the bytecode instruction CAPS (described below) is typicallyexecuted on the device. After initiating execution of the Internetbrowser, the BROWSE instruction performs one or more operations with thebrowser. For example, data representing a uniform resource locator (URL)address may be retrieved from a stack (or other type of memorystructure) for presenting 152 a particular website or webpage on thedevice. Once displayed, the user may interact with the website byinputting data into the device or just viewing the provided information.The BROWSE instruction also determines 154 if execution of the browserhas been terminated. Typically, the browser is closed by a user of thedevice that executed the browser. However, execution of the browser mayalso be terminated by other mechanisms such as by the execution ofanother instruction. So long as the browser is executing, the website orwebpage is presented on the device. However, if the browser is closed,the BROWSE instruction halts 156 further operations.

Referring to FIG. 12, a flow chart 158 represents the operationsprovided by executing the CAPS bytecode instruction. The CAPSinstruction is used to determine the capabilities and functionality ofthe device that executes the instruction. For example, this instructiondetermines the software capabilities of the device such as residentapplications (e.g., Internet browsers, databases, compilers, etc.) thatare present on the device and their respective storage locations (e.g.,hard drive, directory location, etc.). Hardware capabilities are alsointerrogated by the CAPS instruction. For example, the type of processorpresent in the device and the number of ports may be determined.Internal cards (e.g., graphic cards) and additional processors (e.g.,coprocessors, specialized processors, etc.) may also be identified byexecuting the CAPS instruction. By determining the capability andfunctionality of the device that executes the CAPS instruction, thecomputational environment is efficiently determined prior to executingother bytecode instructions. For example, by identifying the Internetbrowser present on the device, the BROWSE bytecode instruction candetermine the appropriate file (and its location) to be executed.

In this example, the CAPS instruction interrogates 160 the hardware andsoftware capabilities of the device and then returns 162 data thatrepresents the capabilities of the device. In one example, a binary wordis returned by the instruction that includes a number of bits thatrepresent the device capabilities. One group of bits may represent theparticular operating system (e.g., Microsoft XP™) being used by thedevice while another bit may represent if the device includes additionalhardware such as a GPS receiver.

Referring to FIG. 13, a flowchart 164 represents the operations providedby the GPS bytecode instruction. The GPS instruction is used todetermine 166 the geographic location of the device that executes theinstruction. Once determined, coordinates representing the location arereturned 168 and may be stored in a mobile agent for transit to one ormore other devices. To determine the location, the GPS instruction usesa GPS receiver that is included or is in communication with the devicethat executes the instruction. By providing GPS coordinates and sendingthem in a mobile agent, devices (e.g., cellular phone 40) and the usercarrying the devices can be tracked from other locations (e.g., computersystem 34).

Referring to FIG. 14, a flowchart 170 represents the operations providedby the SLEEP bytecode instruction. In general the SLEEP instructionhalts further instruction execution until a time out period has expiredor an external event has occurred such as a user interacting with thedevice that executed the SLEEP instruction. This instruction providesthe pausing capability that is also used in the MESG, ESEL, and ALERTbytecode instructions. In particular, executing the SLEEP instructionpauses 172 the device from executing further instructions and determines174 if an external event (e.g., input from a user) has occurred prior tothe expiration of a time out period. If an external event has beendetected prior to the end of the time out period, the SLEEP instructionreleases the device that executed the SLEEP instruction and allows thedevice to continue 176 to execute other instructions. If the time outperiod expires prior to an external event occurring, the SLEEPinstruction initiates 178 the transmitting of the mobile agent to one ormore devices (which may or may not include the device currentlyexecuting the SLEEP instruction). By transmitting to one or moredevices, the mobile agent can transit to other devices to track down andinteract with the user associated with the devices.

While FIGS. 7-14 have been used to describe some bytecode instructionsthat may be stored and transmitted in one or more mobile agents, othertypes of bytecode instructions may also be included. For example flowcontrol instructions may be included in mobile agents for callingsubroutines. Comparison bytecode instructions (e.g., branch if equal,branch if not equal, etc.) may also be included in the mobile agents toprovide conditional logic. Stack operation instructions (e.g., POP,PUSH, etc.) may be used to manipulate data on one or more stacks duringprogram execution. Along with the more general instructions, specializedbytecode instructions for particular devices may also be included in andtransmitted with the mobile agents.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made. Accordingly, otherimplementations are within the scope of the following claims.

1. A method for executing operations on a device, comprising the stepsof: executing one or more bytecode language instructions associated witha mobile agent that includes a state of a virtual machine, wherein thebytecode language includes at least one instruction from the groupconsisting of WARP, MESG, ESEL, ALERT, BROWSE, CAPS, SLEEP, and GPS.2-39. (canceled)